import time
import unittest

from parameterized import parameterized

from automatic.base.get_driver import GetDriver
from automatic.base.get_logger import GetLogger
from automatic.page.page_login import PageLogin
from automatic.page.page_task_add import PageTaskAdd
from automatic.tools.read_text import read_txt
from automatic.page.page_edit_task import PageEditTask
from automatic.page.page_task_list import PageTaskList



# 获取log 日志器
log = GetLogger().get_logger()


def get_data_end_task():
    arrs = []
    for data in read_txt("end_task.txt"):
        arrs.append(tuple(data.strip().split(",")))
    return arrs[1:]


# 新建 新建任务测试类 并 继承 unittest.TestCase
class TestEndtask(unittest.TestCase):
    # 新建setUpClass
    @classmethod
    def setUpClass(cls) -> None:
        try:
            # 实例化 并 获取 driver
            cls.driver = GetDriver.get_driver()
            # 实例化PageLogin(),调用登录功能
            cls.login = PageLogin(cls.driver)
            # 执行登录操作
            cls.login.page_login_success()
            # 实例化PageTaskAdd(),调用创建任务功能
            cls.task_add = PageTaskAdd(cls.driver)
            # # 先创建一个任务
            # cls.task_add.page_task_add_success()
            # #并返回任务管理页面
            # cls.task_add.task_management()
            time.sleep(2)
            #实例化PageTaskList(),调用查看功能
            cls.task_list=PageTaskList(cls.driver)
            #实例化PageEditTask()
            cls.edit_task=PageEditTask(cls.driver)
            # #添加数据并开始任务成功
            # cls.edit_task.data_add_success_and_start_task_success()

        except Exception as e:
            # 截图
            cls.edit_task.base_get_img()
            # 日志
            log.error("错误：{}".format(e))

    # 新建tearDownClass
    @classmethod
    def tearDownClass(cls) -> None:
        # 关闭driver驱动对象
        GetDriver.quit_driver()

    @parameterized.expand(get_data_end_task())
    def test_end_task(self,data_filepath):
        try:
            #任务开始后，进行编辑,查看第一个任务
            self.task_add.task_management()
            time.sleep(2)
            self.task_list.page_click_check_button(1)
            time.sleep(2)
            # self.edit_task.page_click_task_end()
            # time.sleep(2)
            # self.edit_task.page_click_confirm()
            # time.sleep(1)
            # #获取结束任务提示文本
            # msg=self.edit_task.page_message_info()
            # time.sleep(2)
            # print(msg)
            # try:
            #     self.assertEqual(msg,"任务已结束")
            # except Exception as e:
            #     # 截图
            #     self.edit_task.base_get_img()
            #     # 日志
            #     log.error("任务结束测试失败：{}".format(e))

            #删除任务
            self.edit_task.page_move_to_task_more()
            time.sleep(2)
            self.edit_task.page_click_task_delete()
            time.sleep(2)
            self.edit_task.page_click_confirm()
            time.sleep(1)
            #获取删除成功文本
            msg=self.edit_task.page_message_info()
            print(msg)
            try:
                self.assertEqual(msg,"任务已删除")
            except Exception as e:
                # 截图
                self.edit_task.base_get_img()
                # 日志
                log.error("任务删除测试失败：{}".format(e))

        except Exception as e:
            # 截图
            self.edit_task.base_get_img()
            # 日志
            log.error("出错了：{}".format(e))



if __name__ == '__main__':
    unittest.main()
